package main

import "fmt"

func main() {
	//切片是对数组的一个连续片段的引用，所以切片是一个引用类型，这个片段可以是整个数组，也可以是由起始和终止索引标识的一些项的子集
	//实际上切片不保存任何数据。数据都是保存在数组中的。
	//当切片需要扩容时，就会自动创建一个合适长度的新数组,以存储更多数据

	var s []int
	var arr = [9]int{0, 1, 2, 3, 4, 5, 6, 7, 8}

	//对数组进行切片
	s = arr[2:4] //得到2,3. 能看出是含头不含尾。不包含索引为4的元素
	fmt.Println(s)

	//对数组的修改，也会影响切片。因为切片引用了数组
	arr[2] = 222
	fmt.Println(s)

	s2 := []int{8, 9, 10}
	s3 := s2    //切片就是个指针，所以这里复制的是指针
	s3[0] = 666 //会修改s2
	fmt.Println(s2)
}
